package com.sunline.poc.oozie.dao.impl;

import com.sunline.poc.oozie.config.JobDefinesConfig;
import com.sunline.poc.oozie.dao.OozieDao;
import com.sunline.poc.oozie.vo.OozieJobConfigVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.*;

@Repository
public class OozieDaoImpl  implements OozieDao {

    @Autowired
    JobDefinesConfig jobDefinesConfig;

    @Override
    public OozieJobConfigVO findOozieJobConfig(String jobName) {
        return findConfig(jobName);
    }

    private OozieJobConfigVO findConfig(String jobName){
        List<Map<String,String>> configList =  jobDefinesConfig.getDefines();
        for (Map<String,String> config:configList) {
            if (jobName.equalsIgnoreCase(config.get("jobName"))){
                return genOozieJobConfigVO(config);
            }
        }
        return  null;
    }

    private OozieJobConfigVO genOozieJobConfigVO(Map<String,String> config){
            OozieJobConfigVO configVO = new OozieJobConfigVO();
             Properties properties = new Properties();
            Iterator<Map.Entry<String, String>> entries = config.entrySet().iterator();
            while (entries.hasNext()) {
                Map.Entry<String, String> entry = entries.next();
                properties.put(entry.getKey(),entry.getValue());
            }
            configVO.setProperties(properties);
            return configVO;
    }

//    public OozieJobConfigVO genDemoConfig(){
//        OozieJobConfigVO vo = new OozieJobConfigVO();
//        Map args  = new HashMap();
//        args.put("arg1","10");
//        args.put("arg2","10");
//
//        vo.setArgs(args);
//        vo.setJavaOpts("-Xmx200m");
//        vo.setMainClass("org.apache.hadoop.examples.QuasiMonteCarlo");
//        vo.setOozieApplicationPath("${nameNode}/user/clientA/oozie/javaaction");
//        vo.setOozieLibPath("${nameNode}/clientA/jars/");
//        return vo;
//    }
//
//    public OozieJobConfigVO genPocConfig(){
//        OozieJobConfigVO vo = new OozieJobConfigVO();
//
//        Map args  = new HashMap();
//        args.put("queueName","default");
//        args.put("oozie.coord.application.path","${nameNode}/user/clientA/oozie/javaaction/poc");
//        args.put("start","2019-03-09T08:40Z");
//        args.put("end","2029-01-01T01:00Z");
//        args.put("workflowAppUri","${nameNode}/user/clientA/oozie/javaaction/poc");
//
//        vo.setArgs(args);
//        vo.setJavaOpts("-Xmx200m");
//        vo.setMainClass("com.sunline.poc.Test");
//        vo.setOozieLibPath("${nameNode}/clientA/jars/");
//        return vo;
//    }
}
